from PySide6.QtCore import QObject, QTimer, Signal
# QObject是 PyQt5 中所有对象模型的基类，提供了 Qt 核心功能，如信号与槽机制、对象树管理等
class RepeatingTimer(QObject):
    """通用的重复定时执行器"""
    timeout = Signal()  # 定时时间到后发出的信号
    
    def __init__(self, interval_ms=1000, parent=None):
        """
        初始化定时器
        :param interval_ms: 时间间隔(毫秒), 默认1000ms(1秒)
        :param parent: 父对象
        """
        super().__init__(parent)
        self.interval_ms = interval_ms
        # QTimer(self) 表示创建一个 Qt 框架提供的定时器对象，self 作为参数传递给 QTimer 的构造函数，指定当前 RepeatingTimer 对象为这个定时器的父对象。
        self.timer = QTimer(self)
        self.timer.setInterval(interval_ms)
        # self.timeout.emit 表示当收到原生定时器信号时，触发当前类自定义的 timeout 信号
        self.timer.timeout.connect(self.timeout.emit)
        
    def start(self):
        """启动定时器"""
        self.timer.start()
        
    def stop(self):
        """停止定时器"""
        self.timer.stop()
        
    def set_interval(self, interval_ms):
        """设置时间间隔"""
        self.interval_ms = interval_ms
        self.timer.setInterval(interval_ms)
        
    def get_interval(self):
        """获取当前时间间隔"""
        return self.interval_ms
    